package String;

/**
 * 在Java中，String.split(String regex, int limit) 方法用于根据给定的正则表达式将字符串切分，
 * 然后返回一个字符串数组。
 * 这里的疑问似乎是关于为何即使指定了 0 作为 limit 参数，字符串依然被拆分了。
 * 实际上，split 方法的行为与 limit 参数的值有关，但解释可能与直观预期有所不同：
 * 当 limit 参数为 正整数 n 时，结果数组最多包含 n+1 个元素。正则表达式会尽可能进行匹配并拆分，
 * 直到得到不超过 n 个子字符串。
 * 当 limit 参数为 负整数 时，表示没有限制，正则表达式会尽可能多地进行匹配和拆分。
 * 当 limit 参数为 0 或 未指定（即使用默认值 0）时，根据Java API文档，
 * 这等同于指定 Integer.MAX_VALUE，意味着也会进行尽可能多的拆分，没有实际限制。
 */

import java.util.Arrays;

public class SplitDemo2 {
    public static void main(String[] args) {
        // split()重载
        String str = "a=b=c=d=e=f======";
        String[] strArray = str.split("=", 2);
        System.out.println(Arrays.toString(strArray));

        strArray = str.split("=", 3);
        System.out.println(Arrays.toString(strArray));
        /*
        split(String regex, int limit)
        limit:即时大于字符串的长度，它的作用就是将字符串拆分成数组，但是数组的长度不会超过limit
         */
        strArray = str.split("=", 240);
        System.out.println(Arrays.toString(strArray));

        strArray = str.split("=", 0);
        System.out.println(Arrays.toString(strArray));

        // 能拆则拆
        strArray = str.split("=", -1);
        System.out.println(Arrays.toString(strArray));
    }
}
